#coding:utf-8

import zipfile,os

# 把整个文件夹内的文件打包成zip文件(包括压缩路径下的子文件夹的文件)
def compress(get_files_path,set_files_path):
    f = zipfile.ZipFile(set_files_path,'w',zipfile.ZIP_DEFLATED)
    for dirpath,dirnames,filenames in os.walk(get_files_path):
        fpath = dirpath.replace(get_files_path,'')
        fpath = fpath and fpath +os.sep or ''
        for filename in filenames:
            f.write(os.path.join(dirpath,filename),fpath+filename)
    f.close()
    print('compress operate success ')

if __name__ == '__main__':
    get_files_path = 'E:\python\嵌套方法'
    set_files_path = 'E:\python\压缩文件夹\\test.zip'
    compress(get_files_path,set_files_path)

    # 压缩路径及存放路径不能一样，不然容易形成死循环。
    # fpath = dirpath.replace(get_files_path,”)    和
    # fpath = fpath and fpath + os.sep or ”  这两句代码是为了对地址进行转换，不然会从最外层文件夹开始进行压缩。（例如：如果缺少这两句，上述代码形成的test.zip文件解压后是
    # test->testzip1->testzip2->file文件下所有的文件。如果加上这两句，则为test->file文件夹下所有的文件）


